A "Reserve" SCSI command is used by an initiator in a data and information communications network to reserve a specific target device, or a portion of that target device, for exclusive use by that initiator. Once a target device, or portion of a target device, has been reserved by an initiator, that target device, or portion thereof, cannot be used by any other initiator until it is released by the first initiator. The SCSI target device uses the SCSI address of the initiator that issued the reserve command to identify the initiator with which it is in a unique reserve command relationship. In a Fibre Channel network, the network address is the equivalent of the SCSI address.
In a SCSI-2 environment, the SCSI address is persistent and does not change unless the SCSI node is power cycled. In a Fibre Channel network, the network address assigned to initiators and target devices may be dynamic. Therefore, after a link state change on the network, the network addresses assigned to existing nodes (i.e., initiators or target devices) in the network can change. This behavior creates a problem for SCSI target devices in managing the reserve command behavior in progress between a specific initiator-target device pair across link state changes.
With known methods for managing I/Os in a Fibre Channel network, when an existing I/O is in progress and either an initiator or a target device detects a link state change, the initiator must authenticate that it is still communicating with the same target device before the I/O can continue. This authentication is detailed in the Fibre Channel PLDA (Private Loop Direct Attach) profile. This profile is an extension to the SCSI-3 standard FCP (Fibre Channel Protocol), which defines SCSI implementation over Fibre Channel. The PLDA profile states that after a link state change from a link-down to link-up condition, the initiator must send an ADISC (Address Discovery) or PDISC (Port Discovery) ELS (Extended Link Service) command to every target device with which it has I/Os in progress. The ADISC and PDISC commands are used to exchange node name and port name information. The PLDA profile further requires that if the target device detects that the network address of an initiator has changed, then the target device should terminate the existing I/Os from that initiator. After this step, the initiator performs a recovery process and in some other way restarts the I/O transmission (i.e., communication).
One particular example of an initiator and target device relationship is the reserve command in SCSI. A reserve command allows an initiator to reserve a specific SCSI target device, or a specific portion of a target device, for its exclusive use. The target device reserved is required to maintain that reservation until the same initiator that reserved the target device issues a release command. When an initiator and a target device are in a unique reserve command relationship, they need not be in continuous communication with one another. In other words, it is possible that at any given time an I/O communication could be in progress between the initiator and the target device, or that no I/O communication is in progress. Also, more than one initiator can be in a unique reserve command relationship with a target device at a given time. It is also possible for one initiator to either issue multiple reserve commands to the same target device, thereby reserving multiple discreet portions of that target device, or to issue a single reserve command to a target device to reserve the entire target device. Lastly, multiple initiators can issue multiple reserve commands to reserve specific discreet portions of the same target device. The number of unique reserve command relationships that a target device can have is limited only by the extent to which that target device can be subdivided into discreet reservable portions.
In the event a unique reserve command relationship exists between an initiator and a target device and a link state change occurs, the target device will not be able to tell which initiator reserved it for exclusive use if, as is possible in a Fibre Channel network, the network address has changed.
The termination of a unique reserve command relationship between an initiator and a target device or of I/Os between an initiator and a target device because of a network address change is disruptive. I/Os will not be able to continue in such a case. Such a termination reduces the overall performance of the network because it unnecessarily slows system or network traffic. In some applications, such as where a tape drive serves as the target device for a SCSI initiator, a general application failure may result. Moreover, loss of data results in many instances where this I/O termination process must occur.
In Fibre Channel, initiators talk to target devices using network addresses (PIDs). Each target and each initiator is assigned a PID. In essence, target devices and initiators only know one another in the Fibre Channel network by their network address.
In the event of a link state change, such as when a link goes down and then comes back up, or when a new node is added into the network, the network address of either or both the initiator or target device (or initiators or target devices) can change. An initiator may be, for example, a host personal computer that initiates a SCSI command. A target device may be some type of SCSI device such as a CD-ROM, a tape drive, or other peripheral device. If a link state change occurs in the network while I/Os are in the process of being transmitted, a problem may arise upon the resumption of transmission following the link state change. If a link state change occurs a network address change can result. Because the initiator and target device conventionally only use the network addresses for identification, a confused state can arise in the I/O transmission or reserve command relationship. This confused state could have numerous manifestations, not the least of which would be the generation of corrupted data, lost security, or generally low performance of the network.
The PLDA (private loop direct attach) profile addresses this problem by assigning to each target device and each initiator in a Fibre Channel network loop a unique node name and a unique port name, each of which are represented as 64-bit identifiers. The node name for the initiator or target device defines the node for the particular device, while the port name defines the particular port on the identified node. Note, however, that a given node may possess numerous ports. Accordingly, the port name uniquely identifies the desired port on the given node.
The initiator and target device exchange their respective node names and port names during initial communication, as defined in the FC-PH (Fibre Channel Physical) standard. The node name and port name, when combined with the PID, uniquely identify a device. In the PLDA profile, after a link state change, the initiators send either an ADISC (Address Discovery) or PDISC (Port Discovery) command to each target device with which they were in communication at the time of the link state change. The ADISC or PDISC command communicates between the target device and the initiator, a port name, node name, and PID for identification. The target device and initiator compare the node name, port name, and PID (network address) provided during initial communication to the node name, port name, and PID provided by the JDISC or PDISC command. If they are the same, then the target device and the initiator know that they are the same target device and the same initiator that were communicating with one another both before and after the link state change. If not, then the network addresses have changed and under the PLDA profile, all I/Os between the target device and the initiator are aborted.
According to the PLDA profile, the set of data, including the PID, the node name, and the port name, is called a "triplet." Thus, a triplet in a Fibre Channel network uniquely identifies a network node. In a Fibre Channel network, the PID is the address from which an ADISC or PDISC command is received. The ADISC or PDISC command, therefore, includes the port name and node name within its data payload.
The initiator sends out the ADISC or PDISC command. In response, the target device sends to the initiator an "accept" command, which operates as essentially a "handshake." In addition, the target device sends to the initiator the target device's network address, together with the target device's port name and node name.
The handshaking occurs prior to I/O continuation between the target device and initiator, or the resumption of a unique reserve command relationship, following a link state change. Thus, this form of authentication occurs every time a link goes down and then later comes back up. In fact, authentication occurs continually throughout the communication of I/Os in the Fibre Channel arbitrated loop.
According to the PLDA profile, when I/Os are in progress and a target device's network address (PID) changes, the target is to abort all I/Os. The initiator must perform error recovery on these aborted I/Os. Aborting I/Os in accordance with the authentication process defined by the PLDA profile results in performance problems. In the case of SCSI tape operations, the authentication process may result in application failures, from which the associated host may not be able to recover. That is, in the example of a SCSI tape, it may be impossible for the host to identify the physical location of the tape head or the sequentially-fed tape. Other problems arise from the present method of target authentication following a state change in the Fibre Channel network because the process is, in essence, a catastrophic procedure for addressing a rather common Fibre Channel network occurrence.
In a multi-initiator network, the current standard for PLDA that requires target device authentication following a failure, such as a tape failure, cannot operate. In the event that I/Os are interrupted, all the initiators on the multi-initiator network must take the time and cause the necessary delays associated with the target device authentication process. Accordingly, there is a need for a method and system that addresses the performance limitations arising in the known systems and methods for identifying target devices and initiators following a link state change in a Fibre Channel network loop.
A need exists for a method and system that overcomes the data loss problems occurring in known target authentication methods and systems during a link state change in a Fibre Channel network, such that unique reserve command relationships between an initiator and a target device can be preserved following a link state change.
A further need exists for a method and system that avoids the general application failure that may happen in sequentially operated and other target and initiator devices upon a link state change in a Fibre Channel network while preserving the unique reserve command relationship between a target device and an initiator.
A still further need exists for a method and system that uniquely identifies an initiator to a target device by a method other than the network address, which can be dynamically changing in a Fibre Channel network, so as to preserve unique reserve command relationships existing between a target device and an initiator prior to the link state change.
A still further need exists for a method and system for handling delays in I/Os through a multi-initiator Fibre Channel arbitrated loop network that avoids the need for each initiator to perform the target authentication process upon I/O transmission being restarted following a break in transmission.